package userinfo.Controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import userinfo.Entity.UserInfo;
import userinfo.Filter.R;
import userinfo.Filter.Result;
import userinfo.Service.UserInfoService;

import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author 小陈同学
 * @since 2023-06-26
 */
@CrossOrigin
@Slf4j
@RestController
@RequestMapping("/user-info")
public class UserInfoController {

    @Autowired
    private UserInfoService userInfoService;

    /**
     * 用作小程序的查询用户信息
     */
    @GetMapping("{openid}")
    public UserInfo getUserInfo(@PathVariable(value = "openid") String openid) {
        //根据用户id查询信息并返回
        return userInfoService.getUserInfo(openid);
    }

    /**
     * 用于web端的所有用户分页操作
     */
    @GetMapping("/{currentPage}/{PageSize}")
    public R getPage(@PathVariable Integer currentPage, @PathVariable Integer PageSize, UserInfo userInfo) {
        IPage<UserInfo> page = userInfoService.getPage(currentPage, PageSize, userInfo);
        //如果当前页码之大于总页码值，重新执行查询操作，使用最大页码作为当前页码值
        if (currentPage > page.getPages())//如果当前页码之大于总页码值
            page = userInfoService.getPage((int) page.getPages(), PageSize);//使用最大页码作为当前页码值
        return new R(true, page);
    }

    /**
     * 用于用户更新信息
     */
    @PostMapping("/AddOrUpdate")
    public Result AddOrUpdate(@RequestBody UserInfo userInfo) {
        return userInfoService.saveOrUpdate(userInfo) ? Result.success() : Result.failure();
    }

}
